﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Public;
using BLL;

namespace QLNhanKhau
{
    public partial class UCUpdateNhanKhau : UserControl
    {
        public UCUpdateNhanKhau()
        {
            InitializeComponent();
        }

        private void btnTim_Click(object sender, EventArgs e)
        {
            if (txtSoSHK.Text == "")
            {
                MessageBox.Show("Nhập số sổ hộ khẩu cần tìm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                txtSoSHK.Focus();
                return;

            }
            int SoSHK = int.Parse(txtSoSHK.Text);
            SoHoKhauPublic shk = SoHoKhauBLL.LoadSoHoKhauBySoSHK(SoSHK);
            if (shk == null)
            {

                dgvNhanKhau.DataSource = null;
                MessageBox.Show("Không tìm thấy!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                txtSoSHK.ResetText();
                txtSoSHK.Focus();
                return;
            }
            else
            {

                List<NhanKhauPublic> list_nk = NhanKhauBLL.LoadNhanKhauByMaSHK(shk.MaSHK);
                dgvNhanKhau.DataSource = list_nk;
                //dgvNhanKhau.Columns[0].HeaderText = "Mã nhân khẩu";
                dgvNhanKhau.Columns[1].HeaderText = "Họ và tên";
                //dgvNhanKhau.Columns[3].HeaderText = "Tên gọi khác";
                dgvNhanKhau.Columns[4].HeaderText = "CMND";
                dgvNhanKhau.Columns[5].HeaderText = "Ngày sinh";
                //dgvNhanKhau.Columns[6].HeaderText = "Nơi sinh";
                dgvNhanKhau.Columns[7].HeaderText = "Giới tính";
                dgvNhanKhau.Columns[8].HeaderText = "Quê quán";
                dgvNhanKhau.Columns[9].HeaderText = "Dân tộc";
                dgvNhanKhau.Columns[10].HeaderText = "Nghề nghiệp";
                dgvNhanKhau.Columns[11].HeaderText = "Quốc tịch";
                //dgvNhanKhau.Columns[12].HeaderText = "Chứng tử";
                dgvNhanKhau.Columns[13].HeaderText = "Tôn giáo";
                dgvNhanKhau.Columns[14].HeaderText = "Trình độ";
                //dgvNhanKhau.Columns[15].HeaderText = "Sổ hộ khẩu";
                dgvNhanKhau.Columns[16].HeaderText = "Quan hệ";
                dgvNhanKhau.Columns[0].Visible = false;
                //dgvNhanKhau.Columns[1].Visible = false;
                dgvNhanKhau.Columns[2].Visible = false;
                dgvNhanKhau.Columns[3].Visible = false;
                //dgvNhanKhau.Columns[4].Visible = false;
                //dgvNhanKhau.Columns[5].Visible = false;
                dgvNhanKhau.Columns[6].Visible = false;
                //dgvNhanKhau.Columns[7].Visible = false;
                //dgvNhanKhau.Columns[8].Visible = false;
                dgvNhanKhau.Columns[9].Visible = false;
                //dgvNhanKhau.Columns[10].Visible = false;
                dgvNhanKhau.Columns[11].Visible = false;
                dgvNhanKhau.Columns[12].Visible = false;
                dgvNhanKhau.Columns[13].Visible = false;
                dgvNhanKhau.Columns[14].Visible = false;
                dgvNhanKhau.Columns[15].Visible = false;
                //dgvNhanKhau.Columns[16].Visible = false;
                dgvNhanKhau.Columns[17].Visible = false;
                dgvNhanKhau.Columns[18].Visible = false;
                dgvNhanKhau.Columns[19].Visible = false;
                dgvNhanKhau.Columns[20].Visible = false;
                dgvNhanKhau.Columns[21].Visible = false;
                //dgvNhanKhau.Columns[22].Visible = false;
                DataGridViewCellStyle style = new DataGridViewCellStyle();
                style.ForeColor = Color.AliceBlue;
                style.BackColor = Color.Red;
                for (int i = dgvNhanKhau.RowCount - 1; i >= 0; i--)
                {
                    if ((byte)dgvNhanKhau.Rows[i].Cells[21].Value != 0)
                    {
                        dgvNhanKhau.Rows[i].DefaultCellStyle = style;
                        groupBox1.Enabled = false;
                        btnXoa.Enabled = false;
                        btnSua.Enabled = false;
                        return;
                    }
                    else
                    {
                        groupBox1.Enabled = true;
                        btnXoa.Enabled = true;
                        btnSua.Enabled = true;
                    }
                }
            }
        }
        int _MaNK;
        private void dgvNhanKhau_SelectionChanged(object sender, EventArgs e)
        {
            DataGridViewCell cell = null;

            foreach (DataGridViewCell select in dgvNhanKhau.SelectedCells)
            {
                cell = select;
            }
            if (cell != null)
            {
                DataGridViewRow row = cell.OwningRow;
                _MaNK = (int)row.Cells[0].Value;
                txtHoTen.Text = (string)row.Cells[1].Value;
                txtCMND.Text = (string)row.Cells[4].Value;
                dateNgaySinh.Value = (DateTime)row.Cells[5].Value;

                if ((bool)row.Cells[7].Value == true)
                    sbtGioiTinh.Value = true;
                else
                    sbtGioiTinh.Value = true;
                txtQueQuan.Text = (string)row.Cells[8].Value;
                txtNgheNghiep.Text = (string)row.Cells[10].Value;
                cmbQuocTich.SelectedValue = (byte)row.Cells[11].Value;
                cmbTonGiao.SelectedValue = (byte)row.Cells[13].Value;
                cmbTrinhDo.SelectedValue = (byte)row.Cells[14].Value;
                cmbNoiSinh.SelectedValue = (int)row.Cells[6].Value;
                cmbQuanHe.SelectedValue = (byte)row.Cells[16].Value;
                cmbDanToc.SelectedValue = (byte)row.Cells[9].Value;
                if ((byte)row.Cells[16].Value == 1)
                {
                    cmbQuanHe.Enabled = false;
                }
                else
                    cmbQuanHe.Enabled = true;
                DataGridViewCellStyle style = new DataGridViewCellStyle();
                style.ForeColor = Color.AliceBlue;
                style.BackColor = Color.Red;
                for (int i = dgvNhanKhau.RowCount - 1; i >= 0; i--)
                {
                    if ((byte)dgvNhanKhau.Rows[i].Cells[21].Value != 0)
                    {
                        dgvNhanKhau.Rows[i].DefaultCellStyle = style;
                        groupBox1.Enabled = false;
                        btnXoa.Enabled = false;
                        btnSua.Enabled = false;
                        return;
                    }
                    else
                    {
                        groupBox1.Enabled = true;
                        btnXoa.Enabled = true;
                        btnSua.Enabled = true;
                    }
                }
            }
        }

        private void UCUpdateNhanKhau_Load(object sender, EventArgs e)
        {
            cmbDanToc.DataSource = DanTocBLL.LoadDanToc();
            cmbDanToc.DisplayMember = "TenDanToc";
            cmbDanToc.ValueMember = "MaDT";
            //load quoc tich
            cmbQuocTich.DataSource = QuocTichBLL.LoadQuocTich();
            cmbQuocTich.DisplayMember = "TenQuocTich";
            cmbQuocTich.ValueMember = "MaQT";
            //load tôn giáo 
            cmbTonGiao.DataSource = TonGiaoBLL.LoadTonGiao();
            cmbTonGiao.DisplayMember = "TenTonGiao";
            cmbTonGiao.ValueMember = "MaTG";
            //load trình độ
            cmbTrinhDo.DataSource = TrinhDoBLL.LoadTrinhDo();
            cmbTrinhDo.DisplayMember = "TenTrinhDo";
            cmbTrinhDo.ValueMember = "MaTD";
            //load người cấp

            cmbQuanHe.DataSource = QuanHeBLL.LoadToanBoQuanHe();
            cmbQuanHe.DisplayMember = "TenQuanHe";
            cmbQuanHe.ValueMember = "MaQH";
            cmbQuanHe.Enabled = false;

            cmbNoiSinh.DataSource = TinhBLL.LoadTinh();
            cmbNoiSinh.DisplayMember = "TenTinh";
            cmbNoiSinh.ValueMember = "MaT";
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            if (txtHoTen.Text==""||txtQueQuan.Text==""||txtNgheNghiep.Text=="")
            {
                MessageBox.Show("Vui lòng nhập đầy đủ thông tin", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
        //UpdateNhanKhau(string HoTen, bool GioiTinh, int NoiSinh, DateTime NgaySinh, byte DanToc,byte QuocTich, byte TonGiao, byte TrinhDo, string NgheNghiep, string QueQuan, int MaQH, string CMND, string TenGoiKhac, int MaNK)
            NhanKhauBLL.UpdateNhanKhau(txtHoTen.Text, (bool)sbtGioiTinh.Value, (int)cmbNoiSinh.SelectedValue, (DateTime)dateNgaySinh.Value, (byte)cmbDanToc.SelectedValue, (byte)cmbQuocTich.SelectedValue, (byte)cmbTrinhDo.SelectedValue, (byte)cmbTrinhDo.SelectedValue, txtNgheNghiep.Text, txtQueQuan.Text, (byte)cmbQuanHe.SelectedValue, txtCMND.Text, txtTenGoiKhac.Text, _MaNK);
            MessageBox.Show("Cập nhật thành công", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Information);
            UCUpdateNhanKhau_Load(sender, e);
            btnTim_Click(sender, e);
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if ((NhanKhauBLL.LoadNhanKhauByMaNK(_MaNK).MaQH) == 1)
            {
                MessageBox.Show("Không thể xóa chủ hộ", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                return;
            }
            DialogResult resuft = MessageBox.Show("Xóa nhân khẩu này!", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            switch (resuft)
            {
                case DialogResult.OK:
                    //NhanKhauBLL.UpdateKhaiTu(_MaKT,null);
                    ChuyenKhauBLL.DeleteChuyenKhauNK(_MaNK);
                    NhanKhauBLL.DeleteNhanKhau(_MaNK);
                    KhaiSinhBLL.DeleteKhaiSinh(_MaNK);
                    KhaiTuBLL.DeleteKhaiTu(_MaNK);
                    UCUpdateNhanKhau_Load(sender, e);
                    btnTim_Click(sender, e);
                    if (dgvNhanKhau == null)
                    {
                        SoHoKhauBLL.DeleteSHK(int.Parse(txtSoSHK.Text));
                    }
                    MessageBox.Show("Xóa thành công!", "Thông báo", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
                    break;
                case DialogResult.Cancel:
                    break;
            }

        }
        private void txtCMND_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) || txtCMND.Text.Length > 8 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtSoSHK_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar) || txtSoSHK.Text.Length > 7 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
            if (e.KeyChar == 13)
                btnTim_Click(sender, e);
        }

        private void txtHoTen_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtHoTen.Text.Length > 29 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtTenGoiKhac_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtTenGoiKhac.Text.Length > 29 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtNgheNghiep_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtNgheNghiep.Text.Length > 49 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtQueQuan_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (txtQueQuan.Text.Length > 49 && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }
        private void txtCMND_Leave(object sender, EventArgs e)
        {
            NhanKhauPublic nk = NhanKhauBLL.LoadNhanKhauByCMND(txtCMND.Text);
            if (nk != null)
            {
                balloonTip2.ShowBalloon(txtCMND);
                balloonTip2.SetBalloonCaption(txtCMND, "Thông báo");
                balloonTip2.SetBalloonText(txtCMND, "Đã có CMND này trong hệ thống");
                txtCMND.Focus();
            }

            if (txtCMND.Text.Length < 9)
            {
                balloonTip2.ShowBalloon(txtCMND);
                balloonTip2.SetBalloonCaption(txtCMND, "Thông báo");
                balloonTip2.SetBalloonText(txtCMND, "CMND không hợp lệ");
                txtCMND.Focus();
            }
        }

       
        private void cmbQuanHe_SelectionChangeCommitted(object sender, EventArgs e)
        {
            if ((byte)cmbQuanHe.SelectedValue == 1)
            {
                MessageBox.Show("Đã có chủ hộ", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cmbQuanHe.Focus();
            }
        }

        private void cmbQuanHe_Leave(object sender, EventArgs e)
        {
            if ((byte)cmbQuanHe.SelectedValue == 1)
            {
                MessageBox.Show("Đã có chủ hộ", "Thông báo nhập liệu", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                cmbQuanHe.Focus();
            }
        }

       

    }
}